When designing electronic systems, hardware designers routinely utilize portions of predesigned circuitry referred to as “cores.” The cores are typically specified in a hardware description language (HDL). A hardware designer may use one or more cores licensed from third party core developers to create the electronic system. The cores are often used in combination with one or more other portions of user specified circuitry that may also be specified in HDL.
The cores are usually protected to prevent unauthorized usage of the cores and to hide implementation details of the cores from hardware designers. For example, a core may be provided as a black box where the hardware designer is provided with limited information about the core. The hardware designer may be provided with information such as the types of inputs that may be provided to the core, the types of outputs that may be generated by the core, and other operational aspects of the core relating to timing, power consumption, and the like. The specific HDL source code and circuitry specified by the core, i.e., the internal workings, are usually hidden from the hardware designer.
Modern electronic system design has embraced the use of high level programming languages (HLLs) such as C and/or C++. To meet the growing demand for hardware design using HLLs, protection is needed for HLL cores that secures the HLL cores for core developers and also facilitates usage of the HLL cores in electronic systems.